/**
 * @file Parameter.h
 * @author RittoQin (1264145445@qq.com)
 * @brief 
 * @version 1.0
 * @date 2022/4/18
 *
 * @copyright Copyright SCUT RobotLab(c) 2022
 *
 */

#pragma once

#include <string>

typedef struct {
    int width;
    int height;
} Anchor;   // 先验框尺寸

struct Parameter {
    explicit Parameter(const std::string &);

    std::string MODEL;  // 模型路径
    int INPUT_SIZE;     // 输入尺寸
    int NUM_CLASSES;    // 类别数
    float OBJ_THRESH;   // 物体置信度阈值
    float NMS_THRESH;   // 极大值抑制 IOU阈值
    float SCORE_THRESH;  // 物体类别置信度阈值
    std::vector<std::string> CLASSES;    // 类别列表
    // Layers grid_small - grid_mid - grid_large
    std::vector<std::string> LAYER_NAMES; // 层名 "691" - "671" - "output"
    std::vector<int> STRIDES;   // 步长 32 - 16 - 8
    std::vector<Anchor> ANCHORS_S32;    // 32步长先验框
    std::vector<Anchor> ANCHORS_S16;    // 16步长先验框
    std::vector<Anchor> ANCHORS_S8;     // 8步长先验框
};

extern Parameter param;